<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <h1 id="hh"></h1>
    </div>
</body>

</html>
<script>
    var data = {
        name: "李雷",
        age: "12"
    }

    Object.defineProperty(data, "name", {
        configurable: false, //如果这个属性的值为true 那么才可以将这个属性从对象中删除
        enumerable: true,//控制该属性是否可枚举,如果是false那么就是不可枚举,不可枚举就是这个属性不能被遍历出来
        // writable: true,//这个属性是否可写入,如果false,那么不可以更改这个属性值
        //value: '123'//给劫持的属性赋值
        get() {
            //属性被访问的时候会回调这个函数
            //属性被访问的时候 获取的是get的返回值
            console.log('被访问了')
            return '李雷'
        },
        set(val) {
            //属性被重新赋值的时候 会回调这个函数
            console.log('被赋值了')
            console.log("新的结果===",val)
            document.getElementById("hh").innerText = val;
        }

    })

    //删除name属性
    // delete data.name
    // console.log(data)
    // for (let k in data) {
    //     console.log(k)
    // }

    //console.log(Object.keys(data))//这个方法是专门用于获取对象中的key

    // data.name = "韩梅"
    // console.log(data)

</script>